home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / macrosrc.arc / SUMOFP.ASM < prev    next >
Encoding:
Assembly Source File  |  1983-11-17  |  3.2 KB  |  139 lines

  1.  
  2. *SUMOFP - SUMS OF PRODUCTS
  3. *
  4. *      SUMOFP    PRODUCTS-LIST
  5. *
  6. *      PRODUCTS-LIST:=P-LIST,END-ITEM
  7. *      P-LIST:=PRODUCT-ITEM,P-LIST|PRODUCT-ITEM
  8. *      PRODUCT-ITEM:=(OPR,P1,P2,INCR)|##
  9. *      P1:=MULTIPLIER
  10. *      P2:=MULTIPLICAND (TO THE T REGISTER)
  11. *          (IF P2 IS BLANK, USE THE LAST P2)
  12. *      OPR:=+|-|++
  13. *           + IS LOAD T AND ACCUMULATE
  14. *           ++ IS LOAD T AND ACCUMULATE (WITH MOVE)
  15. *           - IS LOAD T AND SUBTRACT FROM AC
  16. *      ##:=CONTINUATION ITEM (NEXT STMT WILL CONTINUE)
  17.  
  18. SUMOFP $MACRO            A1,A2,A3,A4,A5,A6,A7,A8
  19.        $VAR T,F
  20.        $ASG '$$FSOP' TO F.S
  21.        $ASG 0 TO F.SV
  22.        $ASG '$$LSOP' TO T.S
  23.        $IF  T.SV=0
  24.        ZAC
  25.        $ENDIF
  26.        $IF  A1.L#=0
  27.        $SOP :A1:
  28.        $ENDIF
  29.        $IF  A2.L#=0
  30.        $SOP :A2:
  31.        $ENDIF
  32.        $IF  A3.L#=0
  33.        $SOP :A3:
  34.        $ENDIF
  35.        $IF  A4.L#=0
  36.        $SOP :A4:
  37.        $ENDIF
  38.        $IF  A5.L#=0
  39.        $SOP :A5:
  40.        $ENDIF
  41.        $IF  A6.L#=0
  42.        $SOP :A6:
  43.        $ENDIF
  44.        $IF  A7.L#=0
  45.        $SOP :A7:
  46.        $ENDIF
  47.        $IF  A8.L#=0
  48.        $RSOP :A8:
  49.        $ENDIF
  50.        $IF  F.SV=0
  51.        $SOP +
  52.        $ASG 0 TO T.SV
  53.        $ENDIF
  54.        $END
  55.  
  56. $RSOP  $MACRO            A,B
  57.        $SOP :A:
  58.        $IF  B.L#=0
  59.        $RSOP             :B:
  60.        $ENDIF
  61.        $END
  62.  
  63. $SOP   $MACRO            AA,B,C
  64.        $VAR T,A,F
  65.        $ASG '$$FSOP' TO F.S
  66.        $ASG '##' TO T.S
  67.        $IF  (AA.SV#=T.SV)&(F.SV=0)
  68.        $ASG '$$LSOP' TO A.S
  69.        $IF  A.SV=0
  70.        $IF  C.SA&$UNDF
  71.        CALL LTK$         LOAD
  72.        REF  LTK$
  73.        DATA :C:             :C:
  74.        $ELSE
  75.        LT   :C:          LOAD :C:
  76.        $ENDIF
  77.        $ELSE
  78.        $IF  C.L#=0
  79.        $ASG '+' TO T.S
  80.        $IF  T.SV=A.SV
  81.        $IF  C.SA&$UNDF
  82.        APAC              ADD P TO AC
  83.        CALL LTK$         LOAD
  84.        REF  LTK$
  85.        DATA :C:             :C:
  86.        $ELSE
  87.        LTA  :C:          LOAD :C: AND ADD P TO AC
  88.        $ENDIF
  89.        $ENDIF
  90.        $ASG '++' TO T.S
  91.        $IF  T.SV=A.SV
  92.        $IF  C.SA&$UNDF
  93.        APAC              ADD P TO AC
  94.        CALL LTK$         LOAD
  95.        REF  LTK$
  96.        DATA :C:             :C:
  97.        $ELSE
  98.        LTD  :C:          LOAD :C:, ADD P TO AC, :C:->:C:+1
  99.        $ENDIF
  100.        $ENDIF
  101.        $ASG '-' TO T.S
  102.        $IF  T.SV=A.SV
  103.        $IF  C.SA&$UNDF
  104.        SPAC              SUB P FROM AC
  105.        CALL LTK$         LOAD
  106.        REF  LTK$
  107.        DATA :C:            :C:
  108.        $ELSE
  109.        SPAC              SUB P FROM AC
  110.        LT   :C:          LOAD :C:
  111.        $ENDIF
  112.        $ENDIF
  113.        $ELSE
  114.        $ASG '+' TO T.S
  115.        $IF T.SV=A.SV
  116.        APAC              ADD P TO AC
  117.        $ENDIF
  118.        $ASG '++' TO T.S
  119.        $IF  T.SV=A.SV
  120.        APAC              ADD P TO AC
  121.        $ENDIF
  122.        $ASG '-' TO T.S
  123.        $IF  T.SV=A.SV
  124.        SPAC              SUB P FROM AC
  125.        $ENDIF
  126.        $ENDIF
  127.        $ENDIF
  128.        $IF  B.L#=0
  129.        $IF  B.SA&$UNDF
  130.        MPYK :B:          MLTPLY CONST :B:
  131.        $ELSE
  132.        MPY  :B:          MLTPLY :B:
  133.        $ENDIF
  134.        $ENDIF
  135.        $ASG AA.SV TO A.SV
  136.        $ELSE
  137.        $ASG 1 TO F.SV
  138.        $ENDIF
  139.        $END